if (_gtk_widget_get_has_surface (widget))
{
- gtk_widget_unregister_surface (widget, priv->surface);
gdk_surface_destroy (priv->surface);
priv->surface = NULL;
}
}
}
-static gboolean
-surface_expose (GdkSurface *surface,
- cairo_region_t *region,
- GtkWidget *widget)
-{
- gtk_widget_render (widget, surface, region);
-
- return TRUE;
-}
-
-static gboolean
-surface_event (GdkSurface *surface,
- GdkEvent *event,
- GtkWidget *widget)
-{
- gtk_main_do_event (event);
-
- return TRUE;
-}
-
-/**
- * gtk_widget_register_surface:
- * @widget: a #GtkWidget
- * @surface: a #GdkSurface
- *
- * Registers a #GdkSurface with the widget and sets it up so that
- * the widget receives events for it. Call gtk_widget_unregister_surface()
- * when destroying the surface.
- *
- * Before 3.8 you needed to call gdk_surface_set_user_data() directly to set
- * this up. This is now deprecated and you should use gtk_widget_register_surface()
- * instead. Old code will keep working as is, although some new features like
- * transparency might not work perfectly.
- */
-void
-gtk_widget_register_surface (GtkWidget *widget,
- GdkSurface *surface)
-{
- g_return_if_fail (GTK_IS_WIDGET (widget));
- g_return_if_fail (GDK_IS_SURFACE (surface));
-
- g_assert (gdk_surface_get_widget (surface) == NULL);
- gdk_surface_set_widget (surface, widget);
-
- g_signal_connect (surface, "render", G_CALLBACK (surface_expose), widget);
- g_signal_connect (surface, "event", G_CALLBACK (surface_event), widget);
-}
-
-/**
- * gtk_widget_unregister_surface:
- * @widget: a #GtkWidget
- * @surface: a #GdkSurface
- *
- * Unregisters a #GdkSurface from the widget that was previously set up with
- * gtk_widget_register_surface(). You need to call this when the surface is
- * no longer used by the widget, such as when you destroy it.
- */
-void
-gtk_widget_unregister_surface (GtkWidget *widget,
- GdkSurface *surface)
-{
- g_return_if_fail (GTK_IS_WIDGET (widget));
- g_return_if_fail (GDK_IS_SURFACE (surface));
-
- g_assert (gdk_surface_get_widget (surface) == widget);
- gdk_surface_set_widget (surface, NULL);
-
- g_signal_handlers_disconnect_by_func (surface, surface_expose, widget);
- g_signal_handlers_disconnect_by_func (surface, surface_event, widget);
-}
-
/**
* gtk_widget_get_surface:
* @widget: a #GtkWidget